package ar.com.jendrix.common.encrypt;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

import sun.misc.BASE64Encoder;

/**
 * Esta clase permite encriptar de datos utilizando<br>
 * los algorítmos de encriptación MD2, MD5 o SHA1.
 * 
 * @author Jendrix Software
 */
public final class EncryptUtil {
	/**
	 * Encripta el texto pasado como parámetro,<br>
	 * por defecto el algorítmo de encriptación es MD5.
	 * 
	 * @param String
	 *            recibe el texto a encriptar.
	 * @return <b>String</b> retorna el texto encriptado.
	 * @throws NoSuchAlgorithmException
	 */
	public static final String encrypt(String text) throws NoSuchAlgorithmException {
		return encrypt(text, EncryptType.MD5);
	}

	/**
	 * Encripta el texto pasado como parámetro,<br>
	 * utilizando el algorítmo de encriptación indicado.
	 * 
	 * @param String
	 *            recibe el texto a encriptar.
	 * @param MessageType
	 *            indica el algorítmo de encriptación a utilizar.
	 * @return <b>String</b> retorna el texto encriptado.
	 * @throws NoSuchAlgorithmException
	 */
	public static final String encrypt(String text, EncryptType encryptType) throws NoSuchAlgorithmException {
		MessageDigest md = java.security.MessageDigest.getInstance(encryptType.getLabel());
		md.reset();
		md.update(text.getBytes());
		BASE64Encoder encoder = new BASE64Encoder();
		return encoder.encode(md.digest());
	}
}